﻿using Digitalmes.Domain.Entities.Mes.Masters;
using Digitalmes.Domain.ValueObjects;

namespace Digitalmes.Application.Mes.Processes.Operations;

/// <summary>
/// 工序 DTO 对象。
/// </summary>
public sealed class ProcOperationDto : Dto
{
    /// <summary>
    /// 工序编号
    /// </summary>
    [NotNull]
    public string? OpCode { get; set; }

    /// <summary>
    /// 工序名称
    /// </summary>
    [NotNull]
    public string? OpName { get; set; }

    /// <summary>
    /// 产线 Id
    /// </summary>
    public long LineId { get; set; }

    /// <summary>
    /// 产线
    /// </summary>
    public MdLine? Line { get; set; }

    /// <summary>
    /// 产线编码
    /// </summary>
    [NotNull]
    public string? LineCode { get; set; }

    /// <summary>
    /// 工位集合（JSON数组）。
    /// </summary>
    /// <remarks>某些工位是并行执行的，所以某一工序也可以对应多个工位。</remarks>
    [NotNull]
    public List<WorkstationVo>? Workstations { get; set; } = [];

    /// <summary>
    /// 电子作业指导书。
    /// </summary>
    public string? Esop { get; set; }

    /// <summary>
    /// 工艺分类（装配/检验/包装/运输）
    /// </summary>
    public OpClassifyEnum Classify { get; set; }

    /// <summary>
    /// 工艺类型编号。
    /// </summary>
    public string? ProcessTypeCode { get; set; }

    /// <summary>
    /// 工序类型名称，如 切割、焊接、装配、检测、气密等（JSON数组）。
    /// </summary>
    public string? ProcessTypeName { get; set; }

    /// <summary>
    /// 排序
    /// </summary>
    public int Sort { get; set; }

    /// <summary>
    /// 启用状态（0->停用，1->启用）
    /// </summary>
    public EnabledStatusEnum Status { get; set; }
}
